


// #include <tenacitas.tester/test.h>
// #include <tenacitas.tester/test_printer.h>
// #include <tenacitas.basic/ptr.h>
// #include <tenacitas.basic/fault.h>
// #include <sstream>

// #include "date.h"

// #include "algorithm.h"
// #include "day_criteria.h"
// #include "monthly_recurrence.h"

// //#include "frequency.h"

// * \file Declares the tests. Please see \p tenacitas::basic::tester 
// * for details


// using namespace std;
// using namespace tenacitas;


// namespace tenacitas {
//     namespace time {
// 	namespace tests {


	    

// 	    * ------------------------------------------------------ 
// 	    * consider:
// 	    * the days of the month that should appear in the sequence
// 	    * the first day informed
// 	    * the peridocity ('at each')
// 	    * the number of months OR the last date

// 	    * Creates a sequence of dates, based on a monthly by date frequency, such as:
// 	    * it happens every 4th 9th 14th 18th 23th and 26th, starting 2008.5.2, 
// 	    * for 4 months, every month
// // 	    class t000075 : public tester::test {

// // 	    public:
// // 		t000075 ();
// // 		~t000075();
// // 		void operator ( ) ( basic::ptr<tester::test_printer> print )
// // 		    throw ( basic::fault )

// // 		    static ptr<dates> expected_result();
// // 		static days create_on_days();
// // 	    };

// 	    * Creates a sequence of dates, based on a monthly by date frequency, such as:
// 	    * it happens every 4th 9th 14th 18th 23th and 26th, starting 2008.5.4
// 	    * for 4 months, every month
// // 	    class t000076 : public tester::test {

// // 	    public:
// // 		t000076 ();
// // 		~t000076();
// // 		void operator ( ) ( basic::ptr<tester::test_printer> print )
// // 		    throw ( basic::fault )

// // 		    static ptr<dates> expected_result();
// // 		static days create_on_days();
// // 	    };

// <<<<<<< .mine
// =======

// >>>>>>> .r926
// 	}
//     }
// }




// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.7
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.11
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.14
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.16
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.18
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.21
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.23
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.26
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.27
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * number of months = 4
// * at each = 3

// * ------------------------------------------------------ 
// * defining a last date:

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.5.2
// * last date = 2008.08.2
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.4
// * last date = 2008.08.4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.7
// * last date = 2008.08.7
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.11
// * last date = 2008.08.11
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.14
// * last date = 2008.08.14
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.16
// * last date = 2008.08.16
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.18
// * last date = 2008.08.18
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.21
// * last date = 2008.08.21
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.23
// * last date = 2008.08.23
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.26
// * last date = 2008.08.26
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * last date = 2008.08.24
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.27
// * last date = 2008.08.27
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * last date = 2009.05.24
// * at each = 3

// * ------------------------------------------------------ 
// * special days

// * 6 days in the month: 4 9 14 18 23 29
// * first date = 2008.12.24
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 29
// * first date = 2007.12.24
// * number of months = 4
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 30
// * first date = 2007.12.24
// * number of months = 3
// * at each = 1

// * 6 days in the month: 4 9 14 18 23 31
// * first date = 2007.03.24
// * number of months = 4
// * at each = 1

// * ------------------------------------------------------ 
// * defining number of months, and 'not in' dates:

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.5.2
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.4
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.7
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.11
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.14
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.16
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.18
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.21
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.23
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.26
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.27
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * number of months = 4
// * at each = 3
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * ------------------------------------------------------ 
// * defining a last date, and 'not in' dates:

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.5.2
// * last date = 2008.08.2
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.4
// * last date = 2008.08.4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.7
// * last date = 2008.08.7
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.11
// * last date = 2008.08.11
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.14
// * last date = 2008.08.14
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.16
// * last date = 2008.08.16
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.18
// * last date = 2008.08.18
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.21
// * last date = 2008.08.21
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.23
// * last date = 2008.08.23
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.26
// * last date = 2008.08.26
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * last date = 2008.08.24
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.27
// * last date = 2008.08.27
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 26
// * first date = 2008.05.24
// * last date = 2009.05.24
// * at each = 3
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * ------------------------------------------------------ 
// * special days, and 'not in' dates:

// * 6 days in the month: 4 9 14 18 23 29
// * first date = 2008.12.24
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 29
// * first date = 2007.12.24
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 30
// * first date = 2007.12.24
// * number of months = 3
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 

// * 6 days in the month: 4 9 14 18 23 31
// * first date = 2007.03.24
// * number of months = 4
// * at each = 1
// * not in = 2008.05.23 2008.07.26 2008.07.27 



